package com.appkubes.mall.core.pojo;

import com.appkubes.mall.core.po.MallSystemPlugin;
import com.appkubes.mall.core.po.MallSystemPluginExample;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.DeleteProvider;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.annotations.UpdateProvider;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.type.JdbcType;

public interface MallSystemPluginMapper {
    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @SelectProvider(type=MallSystemPluginSqlProvider.class, method="countByExample")
    long countByExample(MallSystemPluginExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @DeleteProvider(type=MallSystemPluginSqlProvider.class, method="deleteByExample")
    int deleteByExample(MallSystemPluginExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @Delete({
        "delete from mall_system_plugin",
        "where plugin_code = #{pluginCode,jdbcType=VARCHAR}"
    })
    int deleteByPrimaryKey(String pluginCode);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @Insert({
        "insert into mall_system_plugin (plugin_code, plugin_type, ",
        "plugin_name, plugin_description, ",
        "plugin_logo, plugin_intr_pics, ",
        "cost_type, cost_fee, ",
        "create_time, update_time, ",
        "plugin_details)",
        "values (#{pluginCode,jdbcType=VARCHAR}, #{pluginType,jdbcType=VARCHAR}, ",
        "#{pluginName,jdbcType=VARCHAR}, #{pluginDescription,jdbcType=VARCHAR}, ",
        "#{pluginLogo,jdbcType=VARCHAR}, #{pluginIntrPics,jdbcType=VARCHAR}, ",
        "#{costType,jdbcType=VARCHAR}, #{costFee,jdbcType=INTEGER}, ",
        "#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, ",
        "#{pluginDetails,jdbcType=LONGVARCHAR})"
    })
    int insert(MallSystemPlugin record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @InsertProvider(type=MallSystemPluginSqlProvider.class, method="insertSelective")
    int insertSelective(MallSystemPlugin record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @SelectProvider(type=MallSystemPluginSqlProvider.class, method="selectByExampleWithBLOBs")
    @Results({
        @Result(column="plugin_code", property="pluginCode", jdbcType=JdbcType.VARCHAR, id=true),
        @Result(column="plugin_type", property="pluginType", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_name", property="pluginName", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_description", property="pluginDescription", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_logo", property="pluginLogo", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_intr_pics", property="pluginIntrPics", jdbcType=JdbcType.VARCHAR),
        @Result(column="cost_type", property="costType", jdbcType=JdbcType.VARCHAR),
        @Result(column="cost_fee", property="costFee", jdbcType=JdbcType.INTEGER),
        @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="plugin_details", property="pluginDetails", jdbcType=JdbcType.LONGVARCHAR)
    })
    List<MallSystemPlugin> selectByExampleWithBLOBsWithRowbounds(MallSystemPluginExample example, RowBounds rowBounds);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @SelectProvider(type=MallSystemPluginSqlProvider.class, method="selectByExampleWithBLOBs")
    @Results({
        @Result(column="plugin_code", property="pluginCode", jdbcType=JdbcType.VARCHAR, id=true),
        @Result(column="plugin_type", property="pluginType", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_name", property="pluginName", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_description", property="pluginDescription", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_logo", property="pluginLogo", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_intr_pics", property="pluginIntrPics", jdbcType=JdbcType.VARCHAR),
        @Result(column="cost_type", property="costType", jdbcType=JdbcType.VARCHAR),
        @Result(column="cost_fee", property="costFee", jdbcType=JdbcType.INTEGER),
        @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="plugin_details", property="pluginDetails", jdbcType=JdbcType.LONGVARCHAR)
    })
    List<MallSystemPlugin> selectByExampleWithBLOBs(MallSystemPluginExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @SelectProvider(type=MallSystemPluginSqlProvider.class, method="selectByExample")
    @Results({
        @Result(column="plugin_code", property="pluginCode", jdbcType=JdbcType.VARCHAR, id=true),
        @Result(column="plugin_type", property="pluginType", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_name", property="pluginName", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_description", property="pluginDescription", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_logo", property="pluginLogo", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_intr_pics", property="pluginIntrPics", jdbcType=JdbcType.VARCHAR),
        @Result(column="cost_type", property="costType", jdbcType=JdbcType.VARCHAR),
        @Result(column="cost_fee", property="costFee", jdbcType=JdbcType.INTEGER),
        @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP)
    })
    List<MallSystemPlugin> selectByExampleWithRowbounds(MallSystemPluginExample example, RowBounds rowBounds);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @SelectProvider(type=MallSystemPluginSqlProvider.class, method="selectByExample")
    @Results({
        @Result(column="plugin_code", property="pluginCode", jdbcType=JdbcType.VARCHAR, id=true),
        @Result(column="plugin_type", property="pluginType", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_name", property="pluginName", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_description", property="pluginDescription", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_logo", property="pluginLogo", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_intr_pics", property="pluginIntrPics", jdbcType=JdbcType.VARCHAR),
        @Result(column="cost_type", property="costType", jdbcType=JdbcType.VARCHAR),
        @Result(column="cost_fee", property="costFee", jdbcType=JdbcType.INTEGER),
        @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP)
    })
    List<MallSystemPlugin> selectByExample(MallSystemPluginExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @Select({
        "select",
        "plugin_code, plugin_type, plugin_name, plugin_description, plugin_logo, plugin_intr_pics, ",
        "cost_type, cost_fee, create_time, update_time, plugin_details",
        "from mall_system_plugin",
        "where plugin_code = #{pluginCode,jdbcType=VARCHAR}"
    })
    @Results({
        @Result(column="plugin_code", property="pluginCode", jdbcType=JdbcType.VARCHAR, id=true),
        @Result(column="plugin_type", property="pluginType", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_name", property="pluginName", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_description", property="pluginDescription", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_logo", property="pluginLogo", jdbcType=JdbcType.VARCHAR),
        @Result(column="plugin_intr_pics", property="pluginIntrPics", jdbcType=JdbcType.VARCHAR),
        @Result(column="cost_type", property="costType", jdbcType=JdbcType.VARCHAR),
        @Result(column="cost_fee", property="costFee", jdbcType=JdbcType.INTEGER),
        @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="plugin_details", property="pluginDetails", jdbcType=JdbcType.LONGVARCHAR)
    })
    MallSystemPlugin selectByPrimaryKey(String pluginCode);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @UpdateProvider(type=MallSystemPluginSqlProvider.class, method="updateByExampleSelective")
    int updateByExampleSelective(@Param("record") MallSystemPlugin record, @Param("example") MallSystemPluginExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @UpdateProvider(type=MallSystemPluginSqlProvider.class, method="updateByExampleWithBLOBs")
    int updateByExampleWithBLOBs(@Param("record") MallSystemPlugin record, @Param("example") MallSystemPluginExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @UpdateProvider(type=MallSystemPluginSqlProvider.class, method="updateByExample")
    int updateByExample(@Param("record") MallSystemPlugin record, @Param("example") MallSystemPluginExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @UpdateProvider(type=MallSystemPluginSqlProvider.class, method="updateByPrimaryKeySelective")
    int updateByPrimaryKeySelective(MallSystemPlugin record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @Update({
        "update mall_system_plugin",
        "set plugin_type = #{pluginType,jdbcType=VARCHAR},",
          "plugin_name = #{pluginName,jdbcType=VARCHAR},",
          "plugin_description = #{pluginDescription,jdbcType=VARCHAR},",
          "plugin_logo = #{pluginLogo,jdbcType=VARCHAR},",
          "plugin_intr_pics = #{pluginIntrPics,jdbcType=VARCHAR},",
          "cost_type = #{costType,jdbcType=VARCHAR},",
          "cost_fee = #{costFee,jdbcType=INTEGER},",
          "create_time = #{createTime,jdbcType=TIMESTAMP},",
          "update_time = #{updateTime,jdbcType=TIMESTAMP},",
          "plugin_details = #{pluginDetails,jdbcType=LONGVARCHAR}",
        "where plugin_code = #{pluginCode,jdbcType=VARCHAR}"
    })
    int updateByPrimaryKeyWithBLOBs(MallSystemPlugin record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table mall_system_plugin
     *
     * @mbg.generated
     */
    @Update({
        "update mall_system_plugin",
        "set plugin_type = #{pluginType,jdbcType=VARCHAR},",
          "plugin_name = #{pluginName,jdbcType=VARCHAR},",
          "plugin_description = #{pluginDescription,jdbcType=VARCHAR},",
          "plugin_logo = #{pluginLogo,jdbcType=VARCHAR},",
          "plugin_intr_pics = #{pluginIntrPics,jdbcType=VARCHAR},",
          "cost_type = #{costType,jdbcType=VARCHAR},",
          "cost_fee = #{costFee,jdbcType=INTEGER},",
          "create_time = #{createTime,jdbcType=TIMESTAMP},",
          "update_time = #{updateTime,jdbcType=TIMESTAMP}",
        "where plugin_code = #{pluginCode,jdbcType=VARCHAR}"
    })
    int updateByPrimaryKey(MallSystemPlugin record);
}